<?php
require_once 'types.php';

/**
 * do wszystkich matołów i partaczy: to jest klasa abstrakcyjna! nie tworzy się obiktów tej klasy, a jedynie się ją dziedziczy!
 * dziedziczy ona po WP_Widget, więc nie ma konieczności kombinowania z instncjami WP_Widget - wystarczy dziedziczyć tą klasę
 * uczta się ludzie bo przez Was nabijają się z programistów PHP :| - Piotr Poradzisz
 */
abstract class wd_widget extends WP_Widget
{
  
  protected $instance;
  
  protected $pluginName;
  
  protected $isPlugin = false;
  
   
  private function getDir()
  {
    return ($this->isPlugin === TRUE ? plugins_url($this->pluginName) : get_template_directory_uri());
  }
  
  protected function printInput($label, $name)
  {
    $input = new input( $this->get_field_name($name), $this->get_field_id($name));
    
    $input->label = $label;
    
    $input->value = $this->getValue($name);
    
    $input->display();  
  }
  
  protected function printChoice($label, $name, $options = array())
  {
    $choice = new choice($this->get_field_name($name), $this->get_field_id($name));
    
    $choice->label = $label;
    
    $choice->options = $options;
    
    $choice->value = (empty($this->instance[$name]) ? null : esc_attr($this->instance[$name]));
    
    $choice->display();
  }
  
  protected function getWidget($content)
  {
    printf('<div class="widget %s">%s</div>', $this->pluginName, $content);  
  }
  
  protected function printScript($name, $debs = null)
  {    
    wp_enqueue_script($name, $this->getDir() . '/js/' . $name . '.js', $debs);
    
    wp_print_scripts($name);   
  }
  
  protected function printStyle($name, $debs = null)
  {
    wp_enqueue_style($name, $this->getDir() . '/css/' .  $name . '.css', $debs);
    
    wp_print_styles($name);
  }
  
  protected function getValue($name)
  {
    return (empty($this->instance[$name]) ? null : esc_attr($this->instance[$name]));
  }
  
  private function getId($name)
  {
    return $this->get_field_id($name);
  }
  
  private function getName($name)
  {
    return $this->get_field_name($name);
  }
  
}
?>